#include<bits/stdc++.h>
using namespace std;
const int range=21; //给定范围
int num[range]={1,1}; //基本情况
int f(int k) //f(k)函数
{
	if(!(k<range)) return false;
	if(k<2) return 1; //以最小的结果反推出前面的f(k)
	return num[k]=f(k-1)+f(k-2);
}
int main()
{
	int a,b,n,m,x,p[range],q[range];
	cin>>a>>n>>m>>x;
	p[1]=p[2]=1,p[3]=2,q[1]=q[2]=q[3]=0;
	f(range-1);  //利用f(k)计算斐波那契
	for(int i=4;i<n;i++) //a,b 分别为上下车人数,m 为 p*a+q*b; p 与 q 要通过找前几个组合的规律用计算式表达
	{
		p[i]=p[i-1]+p[i-2]-1;
		q[i]=q[i-1]+q[i-2]+1;
	}
	if(x<=2)
    {
        cout<<a<<endl;
    }
	b=(m-p[n-1]*a)/q[n-1];
	cout<<(a*p[x]+q[x]*b)<<endl;
}
